JS中实现单例设计模式 您所在的位置:网站首页 js 单例模式实现 JS中实现单例设计模式

JS中实现单例设计模式

2023-10-05 16:40| 来源: 网络整理| 查看: 265

软件工程中,设计模式非常常见,最简单,最被问到的单例设计模式,在JS中如何实现呢?

单例设计模式:单例设计模式(Singleton Pattern)确保一个类只有一个实例,并提供一个访问它的全局访问点。 单例模式的主要目的是节约系统资源,对资源进行控制。由于单例模式只生成一个对象,减少了系统开销,对一些需要频繁创建和销毁的对象具有很好的优化作用,如线程池、缓存。也能避免对一些用作工具类使用的对象的重复创建。

在 JS 中,可以通过以下几种方式实现单例模式:

对象字面量,利用对象字面量创建唯一的对象实例: let singleton = { name: 'singleton', method() { console.log(this.name); } }; 通过工厂方法返回对象,检查对象是否已经实例化,如果是则返回已有实例,否则创建一个新实例。 let singleton = (function() { let instance; function createInstance() { let object = new Object({ name: 'singleton', method() { console.log(this.name); } }); return object; } return { getInstance() { if (!instance) { instance = createInstance(); } return instance; } } })(); 构造函数,可以通过一个变量来存储对象实例,并在构造函数中检查该变量,来决定是否需要创建新实例。 let Singleton = (function() { let instance; function Singleton() { if (instance) return instance; instance = this; } Singleton.prototype.method = function() { console.log('singleton method'); }; return Singleton; })(); var s1 = new Singleton(); var s2 = new Singleton(); s1.method(); ES6 中的 Symbol,利用 ES6 中的 Symbol 可以保证实例的唯一性。 let singletonSymbol = Symbol(); let Singleton = (function() { let instance; class Singleton { constructor() { if (instance) return instance; instance = this; } method() { console.log('singleton method'); } } Singleton[singletonSymbol] = new Singleton(); Object.freeze(Singleton); return Singleton; })(); let s1 = Singleton[singletonSymbol]; let s2 = Singleton[singletonSymbol]; s1.method();

有很多种方法可以实现 JavaScript 中的单例模式。具体如何使用,取决于需求场景和实现难易度。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有